package 数组.easy;

import java.util.Arrays;

/**
 * @author Lw中
 * @date 2020/9/19 10:17
 */
public class BaBa {


    /**
     * 合并两个有序数组
     */

    public void merge(int[] nums1, int m, int[] nums2, int n) {
        /* 方法一：使用库函数 */
        // 将数组二的元素复制到数组一的后面
//        System.arraycopy(nums2, 0, nums1, m, n);
//        // 将数组一进行排序
//        Arrays.sort(nums1);

        /* 方法二：使用双指针(三指针) */
        // nums1数组需要添加元素位置指针
        int p1 = m - 1;
        // nums2数组尾指针
        int p2 = n - 1;
        // 添加元素之后，nums1数组尾指针位置
        int p = m + n - 1;
        while ((p1>=0) && (p2>=0)) {
            nums1[p--] = nums2[p2] > nums1[p1] ? nums2[p2--] : nums1[p1--];
        }
        System.arraycopy(nums2, 0, nums1, 0, p2+1);
    }
}
